return {
  {
    event = "VeryLazy",
    'saecki/crates.nvim',
    ft = { "rust", "toml" },
    dependencies = {
      'nvim-lua/plenary.nvim'
    },
    config = function(_, opts)
      local crates = require('crates')
      crates.setup(opts)
      crates.show()
    end
  },
  {
    event = "BufReadPost",
    "simrat39/rust-tools.nvim",
    ft = "rust",
    dependencies = {
      'neovim/nvim-lspconfig',
      "hrsh7th/cmp-nvim-lsp",
      'nvim-lua/plenary.nvim'
    },
    config = function()
      local rt = require("rust-tools")
      local cmpLsp = require('cmp_nvim_lsp')
      local capabilities = cmpLsp.default_capabilities()

      rt.setup({
        filetypes = { "rust" },
        tools = {
          runnables = {
            use_telescope = true,
          },
          -- inlay_hints = {
          --   auto = true,
          --   show_parameter_hints = true,
          --   parameter_hints_prefix = "",
          --   other_hints_prefix = "",
          -- },
          -- These apply to the default RustSetInlayHints command
          inlay_hints = {
            -- automatically set inlay hints (type hints)
            -- default: true
            auto = true,
            -- Only show inlay hints for the current line
            only_current_line = false,
            -- whether to show parameter hints with the inlay hints or not
            -- default: true
            show_parameter_hints = true,
            -- prefix for parameter hints
            -- default: "<-"
            parameter_hints_prefix = "<- ",
            -- prefix for all the other hints (type, chaining)
            -- default: "=>"
            other_hints_prefix = "=> ",
            -- whether to align to the length of the longest line in the file
            max_len_align = false,
            -- padding from the left if max_len_align is true
            max_len_align_padding = 1,
            -- whether to align to the extreme right or not
            right_align = false,
            -- padding from the right if right_align is true
            right_align_padding = 7,
            -- The color of the hints
            highlight = "Comment",
          },
        },
        server = {
          capabilities = capabilities,
          -- on_attach = function(_, bufnr)
          --   vim.keymap.set("n", "<leader>dc", rt.hover_actions.hover_actions, {
          --     buffer = bufnr
          --   })
          --   vim.keymap.set("n", "<leader>df", rt.code_action_group.code_action_group, {
          --     buffer = bufnr
          --   })
          -- end,
          settings = {
            ["rust-analyzer"] = {
              -- enable clippy on save
              checkOnSave = {
                command = "clippy", -- 不配置的的话是 check 检测
              },
              imports = {
                granularity = {
                  group = "module",
                },
                prefix = "self",
              },
              cargo = {
                allFeatures = true,
                buildScripts = {
                  enable = true,
                },
              },
              procMacro = {
                enable = true,
              },
            },
          }
        },
      })
    end
  }
}
